﻿#include "iTextEdit.h"
QTextEdit& iTextEdit::loadtext(QString& content, QTextEdit& textEdit, ViewMode& mode)
{
	QSignalBlocker blocker(textEdit.document());
	textEdit.clear();
	qDebug() << content+"+++";
	if (mode.base){//若选择的显示模式为markdown
		textEdit.setMarkdown(content);
		//mode.newChange=true;
		/*if (textEdit.textCursor().blockNumber() != 0) {
			iQTextCursor cursor = textEdit.textCursor();
			QSignalBlocker blocker(cursor.document());

			int Position = cursor.QTextCursor::position();
			cursor.beginEditBlock();
			cursor.select(QTextCursor::BlockUnderCursor);
			QString array = cursor.selection().toPlainText();

			// 移动光标到文本块的起始位置
			cursor.movePosition(QTextCursor::StartOfBlock);
			// 扩展光标选区，直到文本块的结束位置
			cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
			cursor.insertText(array, QTextCharFormat());
			cursor.setPosition(Position);
			textEdit.setTextCursor(cursor);
			cursor.endEditBlock();
		}*/
		//else {
		//	iQTextCursor cursor = textEdit.textCursor();
		//	QSignalBlocker blocker(cursor.document());

		//	int Position = cursor.QTextCursor::position();
		//	cursor.beginEditBlock();
		//	cursor.select(QTextCursor::BlockUnderCursor);
		//	QString array = cursor.selection().toPlainText();

		//	// 移动光标到文本块的起始位置
		//	cursor.movePosition(QTextCursor::StartOfBlock);
		//	// 扩展光标选区，直到文本块的结束位置
		//	cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
		//	cursor.insertText(array, QTextCharFormat());
		//	cursor.setPosition(Position);
		//	textEdit.setTextCursor(cursor);
		//	cursor.endEditBlock();
		//}
		
	}else if (!mode.base) {
		textEdit.setPlainText(content);
	}else{}//若后期拓展其他格式再添加
	return textEdit;
}

QTextCursor& iTextEdit::insertText(QString& content, QTextCursor& textCursor, ViewMode& mode) {
	return textCursor;
}
void myNotePad::chargeText() {

	iQTextCursor cursor = mainText->textCursor();
	//QSignalBlocker blocker(cursor.document());
	int Position = cursor.QTextCursor::position();

	cursor.select(QTextCursor::BlockUnderCursor);
	QString array;
	//if (cursor.blockNumber())
		array = cursor.selection().toPlainText();
	//else
	//	array = cursor.selection().toMarkdown();
	
	//iTextEdit::myInsertText(array, cursor, this->getViewMode());
	qDebug() << array << "^^^";

	//mainText->setCurrentCharFormat(QTextCharFormat());
	cursor.setPosition(Position);
	mainText->setTextCursor(cursor);
	
}
QTextCursor& iTextEdit::myInsertText(QString& content, QTextCursor& textCursor, ViewMode& mode)
{
	{
		QSignalBlocker blocker(textCursor.document());


		// 移动光标到文本块的起始位置
		textCursor.movePosition(QTextCursor::StartOfBlock);
		// 扩展光标选区，直到文本块的结束位置
		textCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);

		//textCursor.setBlockCharFormat(QTextCharFormat());

		if (mode.base) {//若选择的渲染模式为markdown
			//textCursor.insertMarkdown(content);

			//当前行渲染方式函数
			textCursor.insertText(content);
		}
		else if (!mode.base) {
			textCursor.insertText(content);
		}
		else {}//若后期拓展其他格式再添加

	}

	return textCursor;

}
void myNotePad::onConvertClicked() {
	//QString selectedText = mainText->textCursor().selectedText();
	//if (!selectedText.isEmpty()) {
	//	QString markdownText = "**" + selectedText + "**";
	//	// 将选定的文本替换为Markdown格式的文本
	//	QTextCursor cursor = mainText->textCursor();
	//	cursor.insertMarkdown(markdownText);
	//	// 在替换文本后清除选定状态
	//	mainText->setTextCursor(cursor);

	//}
}

void myNotePad::insertdisplay() {
	////获取光标
	//iQTextCursor cursor = mainText->textCursor();
	////获取文本块中的内容
	//cursor.select(QTextCursor::BlockUnderCursor);
	//QString string = cursor.selection().toMarkdown();
	//进行正则判断找出markdown的关键标识符
	/*QRegularExpression headingRegex(R"(^#{1,6}\s)");
	QRegularExpression boldRegex(R"(\*\*(.*?)\*\*|__(.*?)__)");
	QRegularExpression italicRegex(R"(\*(.*?)\*|_(.*?)_)");
	QRegularExpression unorderedListRegex(R"(^[-+*]\s)");
	QRegularExpression orderedListRegex(R"(^\d+\.\s)");
	QRegularExpression linkRegex(R"(\[([^\[\]]*)\]\(([^\(\)]*)\))");
	*/



	iQTextCursor mycursor = mainText->textCursor();
	//QSignalBlocker blocker(cursor.document());
	int Position = mycursor.QTextCursor::position();


	mycursor.select(QTextCursor::BlockUnderCursor);
	QString array;
	//if (cursor.blockNumber())
	array = mycursor.selection().toPlainText();


	// 定义 Markdown 标识符的正则表达式
	QRegularExpression markdownRegex(R"(\*\*|__|\*|_|\[.*?\]\(.*?\))");

	// 设置匹配到的标识符的字符格式为灰色
	QTextCharFormat format;
	format.setForeground(QColor(Qt::gray));

	// 在文本块中查找第一个匹配的标识符
	QRegularExpressionMatch match = markdownRegex.match(array);
	while (match.hasMatch())
	{
		int startPos = match.capturedStart();
		int endPos = match.capturedEnd();

		// 设置匹配到的标识符的颜色为灰色
		QTextBlock block = mycursor.block();
		mycursor.setPosition(block.position() + startPos);
		mycursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, endPos - startPos);
		mycursor.setCharFormat(format);

		// 继续查找下一个匹配的标识符
		match = markdownRegex.match(array, endPos);
	}

}


